﻿using System;
using calc;
using matrixLib;

namespace testLib_cs
{
    class Program
    {
        static void MatrixTest()
        {
            Matrix m1 = new Matrix(2, 2);
            Matrix m2 = new Matrix(2, 2);
            Matrix m3 = new Matrix(2, 2);
            Matrix m4 = Matrix.RandomMatrix(5, 5, 80);

            Console.WriteLine("Populando a matriz A[i,j]: ");
            for (int i = 0; i < 2; i++)
            {
                for (int j = 0; j < 2; j++)
                {
                    Console.Write("A[{0}:{1}] = ", i + 1, j + 1);
                    m1[i, j] = Convert.ToInt32(Console.ReadLine());
                }
            }

            Console.WriteLine("Populando a matriz B[i,j]: ");
            for (int i = 0; i < 2; i++)
            {
                for (int j = 0; j < 2; j++)
                {
                    Console.Write("B[{0}:{1}] = ", i + 1, j + 1);
                    m2[i, j] = Convert.ToInt32(Console.ReadLine());
                }
            }

            Console.WriteLine("Soma (m1+m2):\n" + (m1 + m2).ToString());
            Console.WriteLine("Subtração (m1-m2):\n" + (m1 - m2).ToString());
            Console.WriteLine("Multiplicação (m1*m2):\n" + (m1 * m2).ToString());
            Console.WriteLine("Matriz Identidade 5x5:\n" + Matrix.IdentityMatrix(5, 5));
            Console.WriteLine("Matriz Aleatoria 5x5 (m4):\n" + m4.ToString());
            Console.WriteLine("Matriz inversa 2x2 (m1):\n" + m1.Invert());
            Console.ReadLine();
        }

        static void OutrosTestes()
        {
            Console.WriteLine("Soma: " + calc.basicCalc.soma(10, 20));
            Console.WriteLine("Subtração: " + calc.basicCalc.subitracao(10, 20));
            Console.WriteLine("Divisão: " + calc.basicCalc.divisao(20, 20));
            Console.WriteLine("Multiplicação: " + calc.basicCalc.multiplicacao(10, 20));
            Console.WriteLine("Raiz Quadrada: " + calc.AdvCalc.RaizQ(10));
            Console.WriteLine("Raiz cubica: " + calc.AdvCalc.RaizC(10));
            Console.WriteLine("Log: " + calc.AdvCalc.Log(10));
            Console.WriteLine("Log10: " + calc.AdvCalc.Log10(10));
            Console.WriteLine("Fatorial: " + calc.AdvCalc.fact(5));
            Console.ReadLine();
        }

        static void Main(string[] args)
        {
            Console.WriteLine("App Test <------------- C#");
            Console.Write("Testar:\n1 - Matrizes\n2 - Outras funções\n");
            int aChoice = Convert.ToInt32(Console.ReadLine());

            switch (aChoice)
            {
                case 1:
                    MatrixTest();
                    break;
                case 2:
                    OutrosTestes();
                    break;
                default:
                    Console.WriteLine("Não sei o que você quer!!!");
                    break;
            }
        }
    }
}
